1. 드로저(Drozer)란?
Drozer는 안드로이드 앱의 보안 취약점을 분석하고 탐지하기 위해 사용되었던 강력한 도구 중 하나였습니다. 현재는 더 이상 업데이트가 이뤄지지 않고 있지만, 다양한 기능 등을 제공하기 때문에 사용할만한 가치가 있습니다.
2. Linux환경으로 Drozer 사용
리눅스 환경(wsl)으로 드로저를 구현하여 사용할 것이다. wsl을 쓸 경우 adb 환경을 먼저 맞춰 놓아야 한다. (tcpip 설정 or USB 마운트)
Drozer 관련 설정은 다음과 같다. (컴퓨터)
#/bin/bash #파일 가져오기 wget https://github.com/WithSecureLabs/drozer/releases/download/2.4.4/drozer-2.4.4-py2-none-any.whl #의존파일 설치 & 드로저 다운로드 pip install drozer-2.4.4-py2-none-any.whl pip install twisted pip install service_identity
[+]
그 다음 Drozer Agent를 모바일 기기에 adb를 이용하여 넣어주면 된다.adb install drozer.apk
[+]
에이전트와 클라이언트와의 통신을 위해 포트를 포워딩 해준다.adb forward tcp:31415 tcp:31415
[+]
에이전트(휴대폰) 에서 Embeded Server을 On 해준다. [+]
console을 실행시킨다. drozer console connect
3. 드로저 사용 방법
드로저는 옵션으로 줄 수 있는 것이 정해져 있고, 다 비슷하게 동작한다
옵션 | 기능 |
-f | 단어로 패키지 검색 |
-a | 자세한 정보를 볼 때 사용 |
-u | 숨겨진 요소를 찾을 때 사용 |
-p | 특정 권한을 가지고 있는 패키지 검색 |
예시
# 특정 단어로 조회 dz> run app.package.list -f <단어> # 설치된 어플리케이션 패키지 기본 정보 얻기 (자세히) dz> run app.packager.info -a <패키지> # 특정 권한을 가지고 있는 패키지 조회 dz> run app.package.info -p android.permission.SEND_SMS
명령어 리스트
# 설치된 어플리케이션 패키지 목록 dz> run app.package.list # Manifest 파일 추출 dz> run app.package.manifest <패키지> # 드로저를 이용한 패키지 취약점 탐색 dz> run app.package.attacksurface <패키지> # 엑티비티 분석 dz> run app.activity.info -a <패키지> # 엑티비티 실행 (노출된 엑티비티) dz> run app.activity.start --component <패키지> <컴포넌트명> # 브로드캐스트 리시버 검사 run app.broadcast.info -u -f <패키지 명> # 콘텐츠 프로바이더 스캔 run app.provider.info -a <패키지명> # 콘텐츠 프로바이더 uri 스캔 # 프로바이더는 uri주소로 제한된 데이터를 접근하도록 한다. dz> run app.provider.finduri <패키지명> # uri로부터 테이블명을 추출 dz> run scanner.provider.sqltables -a <패키지명> # 쿼리 입력으로 데이터 조회 # run app.provider.query -h 로 쿼리 목록 조회 가 dz> run app.provider.query <uri> # SQLite3 SQL Injection dz> run app.provider.query <uri> --projection "* FROM SQLITE_MASTER WHERE type='table';--" # Injection류 자동 탐지 dz> run scanner.provider.injection -a <패키지명> # 특정 서비스 조회 dz> run app.service.info -u -f <서비스> # 디버깅 가능한 패키지 분석 dz> run app.package.debuggable -f <패키지명>
4. 드로저 모듈 관리
드로저는 모듈을 기반으로 한 명령어기 때문에 기능의 추가와 삭제가 가능하다, 원격 REPO에서 기능을 사용하거나 python등으로 모듈을 만들어서 저장하여 사용할 수 있다.
기본적으로
module search
명령어로 공식 모듈 저장소로부터 다운로드 할 수 있는 모듈을 검색할 수 있다. -d
옵션을 주어 좀 더 구체적으로 볼 수 있다.